package br.com.monise.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "AVALIACAO")
public class Avaliacao implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "ID_AVALIACAO")
	private Long idAvalicao;

	@ManyToOne
	@JoinColumn(name = "ID_APRENDIZ")
	private Aprendiz aprendiz;

	@Column(name = "PESO")
	private int peso;

	@Column(name = "QUALIDADE_TECNICA")
	private int qualidadeTecnica;

	@Column(name = "RELEVANCIA_APRENDIZAGEM")
	private int relevanciaAprendizagem;
	
	@Column(name = "FACILIDADE_USO")
	private int facilidadeUso;

	@Column(name = "FLAG_REAL_SIMULADO")
	private int flagRealSimulado;
	
	@ManyToOne
	@JoinColumn(name = "ID_RECURSO")
	private Recurso recurso;

	public Long getIdAvalicao() {
		return idAvalicao;
	}

	public void setIdAvalicao(Long idAvalicao) {
		this.idAvalicao = idAvalicao;
	}

	public Aprendiz getAprendiz() {
		return aprendiz;
	}

	public void setAprendiz(Aprendiz aprendiz) {
		this.aprendiz = aprendiz;
	}

	public int getPeso() {
		return peso;
	}

	public void setPeso(int peso) {
		this.peso = peso;
	}

	public int getQualidadeTecnica() {
		return qualidadeTecnica;
	}

	public void setQualidadeTecnica(int qualidadeTecnica) {
		this.qualidadeTecnica = qualidadeTecnica;
	}

	public int getRelevanciaAprendizagem() {
		return relevanciaAprendizagem;
	}

	public void setRelevanciaAprendizagem(int relevanciaAprendizagem) {
		this.relevanciaAprendizagem = relevanciaAprendizagem;
	}

	public int getFlagRealSimulado() {
		return flagRealSimulado;
	}

	public void setFlagRealSimulado(int flagRealSimulado) {
		this.flagRealSimulado = flagRealSimulado;
	}

	public Recurso getRecurso() {
		return recurso;
	}

	public void setRecurso(Recurso recurso) {
		this.recurso = recurso;
	}

	public int getFacilidadeUso() {
		return facilidadeUso;
	}

	public void setFacilidadeUso(int facilidadeUso) {
		this.facilidadeUso = facilidadeUso;
	}
	
	public void alterarValorItemAvalaiacao(int novoValor, int index){
		
		switch (index) {
		case 0:
			setFacilidadeUso(novoValor);
			break;
		case 1:
			setPeso(novoValor);
			break;
		case 2:
			setQualidadeTecnica(novoValor);
			break;
		case 3:
			setRelevanciaAprendizagem(novoValor);
			break;

		default:
			break;
		}
	}
	
	public int valorItemAvaliacao(int index){
		//int[] valores = new int[4];
		
		List<Integer> valores = new ArrayList<Integer>();
		valores.add(0, getFacilidadeUso());
		valores.add(1, getPeso());
		valores.add(2, getQualidadeTecnica());
		valores.add(3, getRelevanciaAprendizagem());
		
		return valores.get(index);

	}

}
